#ifndef __ming_fyp_render_Shader_h__
#define __ming_fyp_render_Shader_h__

//------------------------------------------------------------------------------
// header includes

//------------------------------------------------------------------------------
namespace ming
{
namespace fyp
{
namespace render
{
	//--------------------------------------------------------------------------
	class IShader
	{
	public:
		virtual ~IShader() {}
		
		//------------------------------
		// external operations
		virtual void BeginRender() = 0;
		virtual bool BeginPass() = 0;
		virtual void EndPass() = 0;
		virtual void EndRender() = 0;

		virtual void BindParam(
			const char *semantic,
			const void *value,
			size_t size) = 0;
		
		virtual bool HasParam(const char *semantic) = 0;
		
		virtual void CommitParams() = 0;
		
	};
	
	//--------------------------------------------------------------------------
}
}
}


#endif	//__ming_fyp_render_Shader_h__